#pragma once

//#include "umtl/enum_t/enum_t.hpp"
//#include <istream>

////////////////////////////////////////////////////////////////////////////
////
//enum_t( recv_packet_id_e,\
//	   (login)\
//	   (logout)\
//	   (make_stage)\
//	   (join_stage)\
//	   (leave_stage)\
//	   (start_stage)\
//	   (update_stage)\
//	   (end_stage)\
//	   (max)\
//	)
//
////////////////////////////////////////////////////////////////////////////
////
//
//namespace recv_protocol
//{
//	#pragma pack(push, 1)
//
//
//	//////////////////////////////////////////////////////////////////////////
//	//
//
//
//	struct login
//	{
//		std::string account;
//		std::string password;
//	};
//
//	extern std::istream& operator>>(std::istream& stream, login& protocol);
//
//
//	//////////////////////////////////////////////////////////////////////////
//	//
//
//
//	struct logout
//	{
//		
//	};
//
//	extern std::istream& operator>>(std::istream& stream, logout& protocol);
//
//
//	//////////////////////////////////////////////////////////////////////////
//	//
//
//
//	struct make_stage
//	{
//		std::string stage_name;
//	};
//
//	extern std::istream& operator>>(std::istream& stream, make_stage& protocol);
//
//
//	//////////////////////////////////////////////////////////////////////////
//	//
//
//
//	struct join_stage
//	{
//		int stage_id;
//	};
//
//	extern std::istream& operator>>(std::istream& stream, join_stage& protocol);
//
//
//	///////////////////////////////////////////////////////////////////////////////////
//	//
//
//
//	struct leave_stage
//	{
//		int stage_id;
//	};
//
//	extern std::istream& operator>>(std::istream& stream, leave_stage& protocol);
//
//
//	//////////////////////////////////////////////////////////////////////////
//	//
//
//
//	struct start_stage
//	{
//		
//	};
//
//	extern std::istream& operator>>(std::istream& stream, start_stage& protocol);
//
//
//	//////////////////////////////////////////////////////////////////////////
//	//
//
//
//	struct update_stage
//	{
//		short command;
//	};
//
//	extern std::istream& operator>>(std::istream& stream, update_stage& protocol);
//
//	//////////////////////////////////////////////////////////////////////////
//	//
//
//	
//	struct end_stage
//	{
//		
//	};
//
//	extern std::istream& operator>>(std::istream& stream, end_stage& protocol);
//
//	//////////////////////////////////////////////////////////////////////////
//
//	#pragma pack(pop)
//}
//
////////////////////////////////////////////////////////////////////////////